package com.example.mapleleaf.ui.fragment

import android.app.AlertDialog
import android.content.Context
import android.content.Intent
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import android.widget.TextView
import android.widget.Toast
import androidx.recyclerview.widget.LinearLayoutManager
import com.example.mapleleaf.R
import com.example.mapleleaf.ui.recycler.Msg
import com.example.mapleleaf.ui.recycler.MsgAdapter
import kotlinx.android.synthetic.main.fragment_two.*

/**
 * 这是一个简单的Fragment子类，用于实现特定的功能，可能是应用中的某个功能页面相关的Fragment
 */
@Suppress("UNREACHABLE_CODE")
class ThreeFragment : Fragment() {
    // TODO: Rename and change types of parameters
    // 存储传递给Fragment的参数，初始化为null，在onCreate方法中从Bundle中获取实际值
    private var param1: String? = null
    private var param2: String? = null

    /**
     * 在Fragment创建时调用，用于获取传递给Fragment的参数
     */

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // 从savedInstanceState中获取参数，如果不为空则设置param1和param2的值
        arguments?.let {
            param1 = it.getString(ARG_PARAM1)
            param2 = it.getString(ARG_PARAM2)
        }
    }

    /**
     * 创建并返回与该Fragment关联的视图层次结构。这里是从指定的布局文件中加载视图
     */

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?,
    ): View? {
        // Inflate the layout for this fragment，加载fragment_three布局文件作为Fragment的视图
        return inflater.inflate(R.layout.fragment_three, container, false)
    }

    //为fragment中各控件添加点击监听事件
    override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        // 查找名为"tab_exit"的按钮，并为其添加点击监听器
        val btn_exit: Button = activity!!.findViewById<View>(R.id.tab_exit) as Button
        btn_exit.setOnClickListener {
            // 创建一个意图，用于启动Login页面
            val intent = Intent(activity, Login::class.java)
            // 启动Login页面
            startActivity(intent)
            // 关闭当前Activity，这里假设当前Fragment所在的Activity需要在用户点击退出按钮后关闭
            activity!!.finish()
        }

        val textView_set = activity!!.findViewById<View>(R.id.tab_set)
        // 当用户点击该视图时，显示一个Toast消息，表示该功能有待开发
        textView_set.setOnClickListener { Toast.makeText(activity, "有待开发中", Toast.LENGTH_SHORT).show() }

        val textView_change = activity!!.findViewById<View>(R.id.tab_change)
        textView_change.setOnClickListener {
            Toast.makeText(activity, "有待开发中", Toast.LENGTH_SHORT).show()
        }


        val textView_update = activity!!.findViewById<View>(R.id.tab_update)
        textView_update.setOnClickListener {
            // 创建一个AlertDialog.Builder对象，用于构建一个对话框
            AlertDialog.Builder(activity)
                // 设置对话框的标题
                .setTitle("提示")
                // 设置对话框的消息内容
                .setMessage("此版本已是最新版本\n\n无需更新")
                // 设置对话框可以被取消（点击对话框外部可关闭）
                .setCancelable(true)
                // 设置对话框的确定按钮，这里没有点击事件处理逻辑（传入null）
                .setPositiveButton("确定", null)
                // 显示对话框
                .show()
        }

        //显示用户名
        val prefs_user = activity!!.getSharedPreferences("user", Context.MODE_PRIVATE)
        val username =prefs_user.getString("success","")
        val setUsername =activity!!.findViewById<View>(R.id.name) as TextView
        setUsername.text =username
        if (activity!!.isFinishing){
            val editor_user = prefs_user.edit()
            editor_user.clear()
            editor_user.apply()
        }
    }

    companion object {
        /**
         * 这是一个工厂方法，用于创建ThreeFragment的新实例，并传递参数。
         * 这种方式可以方便地创建Fragment实例并传递必要的数据。
         *
         * @param param1 Parameter 1.
         * @param param2 Parameter 2.
         * @return A new instance of fragment ThreeFragment.
         */
        // TODO: Rename and change types and number of parameters
        @JvmStatic
        fun newInstance(param1: String, param2: String) =
            ThreeFragment().apply {
                arguments = Bundle().apply {
                    putString(ARG_PARAM1, param1)
                    putString(ARG_PARAM2, param2)
                }
            }
    }
}